pthread 멀티스레드 API 레퍼런스
NOTE
Linux/POSIX 환경에서 멀티스레드로 포트/네트워크를 스캔할 때 쓰는
pthread기본 API 정리. “PortScan” 미니프로젝트 기획 문서에서 추출. 관련 노트(Windows 계열): (Windows) Win32 멀티스레드 API (_beginthreadex) - Win32 멀티스레드 API (beginthreadex)
⚙️ pthread API
pthread_create()- 인자: (쓰레드 식별자, 쓰레드 속성정보(Default: NULL), 쓰레드가 실행할 함수, 실행 함수에 들어갈 인자)
- 예)
pthread_create(&threads[t], NULL, print_hello, (void *)t) - 성공 시 반환값 0
pthread_exit()— 쓰레드 종료pthread_join()- 인자: (쓰레드 식별자, 쓰레드에 할당된 함수 실행 후 종료상태)
- 예)
pthread_join(threads[t], NULL) - 지정된 쓰레드가 종료될 때까지 기다리며, 쓰레드가 종료되면 즉시 반환
- 성공 시 반환값 0
⚙️ recv() 타임아웃 처리
블로킹 소켓의 recv()가 무한 대기하지 않도록, alarm 시그널을 이용해 타임아웃을 구현할 수 있다(alarm() + SIGALRM 핸들러로 일정 시간 후 강제로 시스템 콜을 인터럽트).